Grundkurs SQL

2.3.1  Die Grundform mit WHERE

Mehrere Tabellen gleichzeitig verbinden

Die Ausgabeliste ist in unserem Beispiel absolut wertlos, es zeigt aber, zu welchen Ergebnissen auch fehlerhafte WHERE-Anweisungen führen können.
Es sei an dieser Stelle darauf hingewiesen, dass bei Verwendung der WHERE-Anweisung immer zuerst das Kreuzprodukt der zu verbindenden Tabellen gebildet wird und erst dann die Ergebnisse nach dem zu vergleichenden Attribut durchsucht und zusammengefasst werden. Das ist bei einer Abfrage mehrerer und sehr langer Tabellen zu beachten, da das leicht zu Performanceproblemen führen kann.
Um dem aus dem Wege zu gehen, lernen wir die JOIN-Anweisung später noch näher kennen, die dasselbe Ergebnis liefert. Doch zuerst wollen wir unsere Verbundabfrage noch ein wenig erweitern. Und fragen uns: Wie können wir weitere Tabellen verbinden?

Wir wollen jetzt neben den drei Attributen aus dem vorherigen Abschnitt noch einen Eintrag aus einer weiteren Tabelle anzeigen lassen. Es gibt ja weitere Tabellen, die mit der Tabelle tbl_mitarbeiter in Beziehung stehen.
Daher stellen wir jetzt eine Verknüpfung mit der Tabelle tbl_titel her. Die Verweise darauf befinden sich in der Spalte titel_ID (Fremdschlüssel der Tabelle Mitarbeiter). Die Tabelle tbl_titel enthält ein Attribut mit gleichem Namen hier aber als Primärschlüssel. Daher wird sie auch als Mastertabelle bezeichnet. Mitarbeiter ist dagegen die so genannte Detailtabelle. In der Abfrage wird die Mastertabelle immer zuerst genannt.
Wir suchen in diesen Spalten nach zueinander passenden Paaren und schreiben in unsere Ergebnisliste zu allen Mitarbeitern die entsprechende Titel.

Unsere SQL-Anweisung können wir entsprechend erweitern. Zusätzliche Bedingungen müssen in der WHERE-Anweisung mit AND hinzugefügt werden. Nach dem Hinzufügen aller benötigten Tabellen und Attribute entsteht die Form:

SELECT tbl_titel.titel, name, abteilungsname, abteilung_aufgabengebiet
FROM   tbl_abteilung, tbl_titel, tbl_mitarbeiter
WHERE  tbl_abteilung.abteilung_ID=tbl_mitarbeiter.abteilung_ID
       AND tbl_titel.titel_ID=tbl_mitarbeiter.titel_ID

Abfrage ausführen  Wenn wir diese Abfrage ausführen, sehen wir, dass sich im Vergleich zur ersten die Anzahl der Ergebnisse – eben alle Mitarbeiter – nichts verändert hat. Lediglich die Spalte Titel ist hinzugekommen. Das war also gar nicht so schwer.